package edu.szcu.vitaguard.service.impl;

import edu.szcu.vitaguard.dao.UserLoginDao;
import edu.szcu.vitaguard.entity.UserLogin;
import edu.szcu.vitaguard.service.UserLoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;

@Service
@Transactional
public class UserLoginServiceImpl implements UserLoginService {

    @Autowired
    private UserLoginDao userLoginDao;

//    @Override
//    public boolean register(UserLogin userLogin) {
//        if (userLogin == null || !StringUtils.hasText(userLogin.getUsername())
//                || !StringUtils.hasText(userLogin.getPassword())) {
//            return false;
//        }
//
//        // 检查用户名是否已存在
//        UserLogin existingUser = userLoginDao.selectByUsername(userLogin.getUsername());
//        if (existingUser != null) {
//            return false;
//        }
//
//        // 设置默认状态
//        userLogin.setStatus(1);
//        userLogin.setIsLocked(0);
//        userLogin.setLoginFailCount(0);
//
//        return userLoginDao.insert(userLogin) > 0;
//    }
@Override
public Long register(UserLogin userLogin) {
    if (userLogin == null || !StringUtils.hasText(userLogin.getUsername())
            || !StringUtils.hasText(userLogin.getPassword())) {
        return 0L;
    }

    // 检查用户名是否已存在
    UserLogin existingUser = userLoginDao.selectByUsername(userLogin.getUsername());
    if (existingUser != null) {
        return 0L;
    }

    // 设置默认状态
    userLogin.setStatus(1);
    userLogin.setIsLocked(0);
    userLogin.setLoginFailCount(0);

    // Convert the int result to long
    return (long) userLoginDao.insert(userLogin);
}

    @Override
    public UserLogin login(String username, String password) {
        if (!StringUtils.hasText(username) || !StringUtils.hasText(password)) {
            return null;
        }

        UserLogin user = userLoginDao.selectByUsername(username);
        if (user == null || !password.equals(user.getPassword())) {
            return null;
        }

        // 更新最后登录时间
        userLoginDao.update(user);
        return user;
    }

    @Override
    public UserLogin getUserById(Integer id) {
        if (id == null || id <= 0) {
            return null;
        }
        return userLoginDao.selectById(id);
    }

    @Override
    public List<UserLogin> getAllUsers() {
        return userLoginDao.selectAll();
    }

    @Override
    public boolean updateUser(UserLogin userLogin) {
        if (userLogin == null || userLogin.getLoginId() == null) {
            return false;
        }
        return userLoginDao.update(userLogin) > 0;
    }

    @Override
    public boolean deleteUser(Integer id) {
        if (id == null || id <= 0) {
            return false;
        }
        return userLoginDao.deleteById(id) > 0;
    }

    @Override
    public UserLogin getUserByName(String name) {
        if (!StringUtils.hasText(name)) {
            return null;
        }
        return userLoginDao.selectByName(name);
    }
}
